package Java8实战._3_Stream_用流收集数据._3_分组;

import Java8实战._3_Stream_用流收集数据.Dish;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class _2_按子组收集数据1 {

    public static void main(String[] args) {
        List<Dish> menu = Arrays.asList(
                new Dish("pork",false,800, Dish.Type.MEAT),
                new Dish("beef",false,700, Dish.Type.MEAT),
                new Dish("chicken", false, 400, Dish.Type.MEAT),
                new Dish("french fries", true, 530, Dish.Type.OTHER),
                new Dish("rice", true, 350, Dish.Type.OTHER),
                new Dish("season fruit", true, 120, Dish.Type.OTHER),
                new Dish("pizza", true, 550, Dish.Type.OTHER),
                new Dish("prawns", false, 300, Dish.Type.FISH),
                new Dish("salmon", false, 450, Dish.Type.FISH)
        );

        /**
         * 菜单中每类菜有多少个
         */
        Map<Dish.Type, Long> collect = menu.stream()
                .collect(Collectors.groupingBy(Dish::getType, Collectors.counting()));

        for (Map.Entry<Dish.Type,Long> map : collect.entrySet()){
            System.out.println(map.getKey() + " : " + map.getValue());

        }


    }
}
